var gulp = require('gulp');
var $ = require('gulp-load-plugins')();
var open = require('open');

var app = {
	srcPath: 'src/',
	devPath: 'build/',
	prdPath: 'dist/'
};

// 依赖插件的文件的拷贝
gulp.task('lib',function(){
	gulp.src('bower_components/**/*.js')	//引入文件
	.pipe(gulp.dest(app.devPath + 'vendor'))	//拷贝文件到dev环境下
	.pipe(gulp.dest(app.prdPath + 'vendor'))	//拷贝文件到正式环境下
	.pipe($.connect.reload());		//文件有变化后自动更新
});

gulp.task('html',function(){
	gulp.src(app.srcPath + '**/*.html')
	.pipe(gulp.dest(app.devPath))
	.pipe(gulp.dest(app.prdPath))
	.pipe($.connect.reload());
});

gulp.task('json',function(){
	gulp.src(app.srcPath + 'data/**/*.json')
	.pipe(gulp.dest(app.devPath + 'data'))
	.pipe(gulp.dest(app.prdPath + "data"))
	.pipe($.connect.reload());
});

gulp.task('less',function(){
	gulp.src(app.srcPath + "style/index.less")
	.pipe($.plumber())	//报错继续运行插件
	.pipe($.less())		//编译less文件
	.pipe(gulp.dest(app.devPath + 'css'))
	.pipe($.cssmin())	//压缩js文件
	.pipe(gulp.dest(app.prdPath + 'css'))
	.pipe($.connect.reload());
});

gulp.task('js',function(){
	gulp.src(app.srcPath + 'script/**/*.js')
	.pipe($.plumber())
	.pipe($.concat('index.js'))	//合并JS文件
	.pipe(gulp.dest(app.devPath + 'js'))
	.pipe($.uglify())	//压缩JS文件
	.pipe(gulp.dest(app.prdPath + 'js'))
	.pipe($.connect.reload());
});

gulp.task('image',function(){
	gulp.src(app.srcPath + 'image/**/*')
	.pipe($.plumber())
	.pipe(gulp.dest(app.devPath + 'image'))
	.pipe($.imagemin())
	.pipe(gulp.dest(app.prdPath + 'image'))
	.pipe($.connect.reload());
})

// 执行build任务就执行后面全部任务
gulp.task('build',['image', 'js', 'less', 'lib', 'html', 'json'])

// 清除
gulp.task('clean',function(){
	gulp.src([app.devPath,app.prdPath])
	.pipe($.clean());
})

// 开启服务任务
gulp.task('server',function(){
	$.connect.server({
		root:[app.prdPath],	//服务器文件读取
		livereload:true,	//自动刷新浏览器
		port:1234	//端口号
	});

	// 打开地址
	open('http://localhost:1234');

	// 监控对应的文件，自动刷新更改
	gulp.watch('bower_components/**/*',['lib']);
	gulp.watch(app.srcPath + '**/*.html',['html']);
	gulp.watch(app.srcPath + 'data/**/*.json',['json']);
	gulp.watch(app.srcPath + 'style/**/*.less',['less']);
	gulp.watch(app.srcPath + 'script/**/*.js',['js']);
	gulp.watch(app.srcPath + 'image/**/*');
});

// 默认任务
gulp.task('default',['server']);
